When data is transmitted and received over a communication network where data can be lost, the possibility of a data loss in the communication network is detected to transmit all the data from a transmitter to a receiver, and such lost data is retransmitted from the transmitter in some cases.
In the Internet Protocol (IP) based networks such as the Internet, according to Transmission Control Protocol (TCP) generally used for transmission and reception without a data loss, the transmitter sequentially divides the transmission data into partial data. Such divided partial data each is applied with a header including a sequence number to generate data for a unit of transmission (hereinafter, referred to as “segment”). Thus generated segments are transmitted in ascending order of the sequence number. In this case, the transmitter records information on the transmission times of the segments. The transmitter has a function of controlling the retransmission of a segment, unless the transmitter can receive an ACKnowledgement (ACK) in response to the transmitted segment from the receiver within a certain period.
This certain period is held by the transmitter beforehand as a retransmission timeout period, and is updated based upon a measurement result of a Round Trip Time (RTT) between the transmitter and the receiver (Non-Patent Document 1). Additionally, when the segment is retransmitted, the doubled value is set to the retransmission timeout period. The exponential backoff algorithm for avoiding network congestion caused by retransmission is included (Non-Patent Document 2).
Furthermore, unlike a wired data link, the throughput in a wireless data link drastically fluctuates. Therefore, there is a communication protocol for a data link for specifying the retransmission of data frames, such as a Radio Link Control (RLC) protocol. When the data link where the retransmission of the data frame is specified is used as a lower layer of the TCP layer, the situation in which a data frame is lost in the data link and then retransmitted is regarded as an increase in the RTT, by the TCP. When the retransmission continues for a limited period of time in the data link and the arrival of the data frame cannot be confirmed within the continued period of time for retransmission, the data frame is considered lost, that is, the segment is considered lost. Accordingly, an upper limit is given to the RTT in the TCP by the continued period of time for retransmission, as a matter of course.
There is a proposal of a technique for enjoying the following both advantages by focusing on the existence of the upper limit of the RTT in the TCP. The first advantage is to suppress the TCP retransmission that continues in the data link by setting the value of the retransmission timeout period before the retransmission occurs in consideration of the upper limit of the RTT. The second advantage is to avoid the congestion caused by retransmission by applying the exponential backoff algorithm from n+1 times or later (Patent Document 1).
In the network environment where the RTT varies over time, however, the retransmission timeout period in the TCP retransmission control is sometimes shorter than the actual RTT. If the retransmission timeout period is shorter than the RTT, a segment might be retransmitted, although the segment is not lost between the transmitter and the receiver. The situation where such a segment retransmission occurs is known as spurious timeout, and can be a cause of degrading the communication throughput.
As a method for detecting the spurious timeout, Forward RTO-Recovery (F-RTO) is known. As to F-RTO, the transmitter transmits two of new untransmitted segments in ascending order of the sequence number, in an event when the retransmission timer expires (hereinafter, referred to as “timeout”). Subsequent to the transmissions of these segments, whether the timeout is caused by a segment loss or a spurious timeout is determined by the content of an ACK firstly received from the receiver in response to the transmissions of those two segments. Specifically, in some cases where the sequence number of the segment, the receipt of which has been confirmed by the received ACK, is greater than the previously received ACK, the timeout is determined to be caused by the spurious timeout. In other cases, the timeout is determined to be caused by the segment loss. When the timeout is determined to be caused by the spurious timeout, subsequent segments are continuously transmitted, whereas when the timeout is determined to be caused by the segment loss, the lost segment is retransmitted and the receiver receives the segment, then subsequent segments are transmitted (Non-Patent Document 3).
In addition, in a case where the data link in which the retransmission of data frame is specified is employed for a lower layer of the TCP layer, if the buffer size for storing the retransmitted frames at the receiver is large enough, any frame won't be lost in the data link. Therefore, even if the retransmission timeout period is set shorter than the upper limit of the RTT, the possibility of an occurrence of the spurious timeout is merely increased. There is no effect to achieve a chance of earlier retransmission and recovery.
In reality, however, there is a limit in the buffer size for storing the retransmitted frames. If the frame bigger than the buffer size is input into the data link, the data will be discarded. That is to say, while there is a disadvantage in that the number of spurious timeouts is increased by making the retransmission timeout period shorter than the upper limit of the RTT, an advantageous chance of earlier retransmission and recovery is obtainable.
In such a situation, by simply combining the transmitter according to the conventional technique described in Patent Document 1 with the conventional technique described in Non-Patent Document 3, it is easily conceivable that the chance of earlier retransmission and recovery chance is achievable while alleviating the disadvantage caused by the occurrence of the spurious timeout.